package com.thinvent.nj.ais.service;

import com.thinvent.nj.mybatis.service.CURDService;
import com.thinvent.nj.ais.entity.User;

import java.util.List;

/**
 * 用户Service
 * @author liupj
 */
public interface UserService extends CURDService<User, String> {
    /**
     * 保存用户（新增，修改，由主键是否为空决定，为空表示新增，否则修改）
     *
     *  保存以下信息：
     *      用户基本信息
     *      用户组织关联关系
     *      用户角色关联关系
     *
     * @param user
     */
    void saveUser(User user);

    /**
     * 删除用户
     *   删除用户组织关联关系
     *   删除用户角色关联关系
     *   删除用户信息
     *
     * @param user
     */
    void deleteUser(User user);

    /**
     * 根据用户名（登录名）获取用户信息（包含关联组织，角色，权限）
     * @param username
     * @return
     */
    User findByUsername(String username, String uri);

    /**
     * 根据组织ID获取组织下的用户列表
     * @param orgId
     * @return
     */
    List<User> findByOrgId(String orgId);

    /**
     * 根据角色ID获取角色下的用户列表
     * @param roleId
     * @return
     */
    List<User> findByRoleId(String roleId);

}
